﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using PMServiceDesk.BusinessLogic;
using PMServiceDesk.DataType;
using PMServiceDesk.Utils.Interfaz;
using PMServiceDesk.Parameters.Constantes;

namespace PMServiceDesk.Web.AppCode
{
    public class RecursoView
    {
        public List<RecursoType> Recursos { get; set; }
        public RecursoType Recurso { get; set; }
        public int TotalRegistros { get; set; }
        public List<GridJSONDataSource> GridJSONDataSources { get; set; }
    }

    public class RecursoIU
    {
        public static RecursoView Listar(RecursoType registroBusqueda, int paginaActual, int cantidadMostrar, string orderBy,bool primerCarga)
        {
            RecursoLogic logic = new RecursoLogic();

            RecursoView view = new RecursoView();

            registroBusqueda.ProyectoId = Sesion.Usuario.ProyectoId;

            view.Recursos = logic.CargarExploradorPaginado(registroBusqueda, paginaActual, cantidadMostrar, orderBy);
            view.TotalRegistros = view.Recursos.Capacity;

            view.GridJSONDataSources = new List<GridJSONDataSource>();

            if (!primerCarga) return view;
            
            view.GridJSONDataSources.Add(new GridJSONDataSource { DataFieldEdit = "TipoRecursoId", DataSource = SoporteLogic.ParametrosPorDominio(Dominios.TipoRecurso,"1")  });
            view.GridJSONDataSources.Add(new GridJSONDataSource { DataFieldEdit = "TipoDocumentoIdentidadId", DataSource = SoporteLogic.ParametrosPorDominio(Dominios.TipoDocumentoIdentidad, "1") });
            view.GridJSONDataSources.Add(new GridJSONDataSource { DataFieldEdit = "CalendarioId", DataSource = SoporteLogic.CalendariosPorProyecto(Sesion.Usuario.ProyectoId , "1") });
            view.GridJSONDataSources.Add(new GridJSONDataSource { DataFieldEdit = "EstadoId", DataSource = SoporteLogic.EstadosPorTabla(Tablas.Recurso, "1") });

            return view;
        }

        public static string ExportarExcel(RecursoType registroBusqueda, List<GridJSONField> gridFields)
        {
            RecursoLogic logic = new RecursoLogic();

            registroBusqueda.ProyectoId = Sesion.Usuario.ProyectoId;

            List<RecursoType> l = logic.CargarExploradorPaginado(registroBusqueda);

            return InterfazUtils.FileTableHTMLGridJSON(l, gridFields, ArchivoConfig.FileServer, Sesion.Usuario.Usuario, "Recursos", ExtensionesArchivos.Excel2003);
        }

        public static ParametroType TipoCostoPorTipoRecurso(string tipoRecursoId)
        {
            ParametroLogic logic = new ParametroLogic();

            ParametroType tipoRecurso = logic.CargarPorId(tipoRecursoId);
            ParametroType tipoCosto = logic.CargarPorId(tipoRecurso.ParametroReferenciaId);

            return tipoCosto;
        }

        public static RecursoType Grabar(RecursoType registro)
        {
            RecursoLogic logic = new RecursoLogic();

            registro.ProyectoId = Sesion.Usuario.ProyectoId;

            logic.Grabar(registro);

            return registro;
        }
    }
}